Пушистый, я пытаюсь локальной переменной присвоить значение глобальной переменной типа Способность и пишет: Cannot convert integer to ability
local ability s
set udg_BuferAbility=GetSpellAbilityId()
set s=udg_BuferAbility
Никак и не на что не влияет глобально, но.. но например хп и мана имеют дробный ренег, типа 0.1, у атаки же таких значение не бывает и поэтому она сразу целая
Вот я тоже интересовался этим, но у меня проблема наоборот в отображении нужных элементов. Когда скрываешь основной интерфейс, исчезает все! Остается лишь панель управления, если применить :
То исчезает и панель управления
После всего этого пытался отобразить кнопки Меню, Логи, Союзники и Задания по отдельности с помощью
set ppp=BlzGetOriginFrame(ORIGIN_FRAME_SYSTEM_BUTTON,0)
call BlzFrameSetVisible(ppp,true)
Но оно не отображало...затем попробовал
set ppp=BlzGetFrameByName("UpperButtonBarMenuButton",0)
call BlzFrameSetVisible(ppp,true)
И оно отобразило все четыре элемента меню, но мне это не надо...
Почему нельзя просто убрать все эти противные рамочки-картиночки и оставить/удалить/переместить все как надо, почему опять все через одно место...
Либо я дурак, либо это все кривое...Уже 2 день сижу и пытаюсь сделать одно и то же и все через одно место, то одно то другое...короче я х3
Скачай какой-нибудь нестандартный интерфейс, там указаны пути импортирования файлов. Причём указаны для замены у определённой расы - human, orc, undead, nightelf.
Если же хочешь свой создать, то с помощью соответствующих графических программ сохрани эти blp, как png, внеси изменения, потом опять сохрани в blp.
Сам задал, сам ответил.
call BlzFrameSetParent выручает ситуацию, т.е. устанавливаешь предка, который не скрыт(любой созданный через blzCreateFrame, и к нему вешаешь.
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode
Что бы сделать каст огненного столба, необходимо создавать вспомогательного юнита, давать ему способность огненный столб и уже вновь созданному скрытому юниту со способностью москиты давать приказ применять огненный столб. Выше описали в какую сторону копать.
P.S. где то на форуме есть архив карт с кучей примеров разного рода фич. Если найду то скину ссылку.
upd.
не надо удалять war3imported\ надо правильно прописывать путь текстур, у каждой модели есть файлик ридми, и в нем написано по какому пути должны лежать текстуры напритмер ты импортнул модель и текстуру и у тебя получился путь war3imported\ 1.blp а в ридми написано textures\1.blp или просто 1.BLP правишь путь именно так как написано.
а если вдруг нету файлика ридми то модель всегда можно открыть блокном ----> поиск текста "blp" и тебе подстветиться среди символов строка как надо прописать текстуры
Для каждого дерева нужны три модели: обычная, неактивная (с названием Doodads\Terrain\AshenTree\AshenTree0S.mdx, например) и неактивная разрушенная (Doodads\Terrain\AshenTree\AshenTree0D.mdx). У неактивных моделей должна быть только одна анимация — Stand. У первой — только деревце, у второй — только пенёк, соответственно.
Когда с деревом никто не взаимодействует, отображаются неактивные модели. Ты их не заменил, потому такая вот фигня.
Как сделать полноценно работающие деревья с моделями, не заменяющими стандартные, я не знаю. Возможно, никак.
Первый коммент на английском и написано что модель не работает, я проверил в обоих редакторах WE: рефордж и 126 - НЕ РАБОТАЕТ. проверил в вар3ме и мдлвисе - модель РАБОТАЕТ. Так что скорее всего ты всё делал правильно...
Изначально было как обычно, через множество групп с нужной выборкой и их очистку. Но было падение фпса, спустя определенное время игры. С помощью счетчика хендлов выяснили что "Pick every unit in" вызывает утечки. Был предложен такой вот метод выбора всех юнитов через локалку и с помощью ifthenelse отсеивать нужных. В принципе помогло с фпсом. Он стабильный. Но вот видимо все эти переборы вызывают микрофризы.
А утечки точно из-за самого выбора? Насколько знаю, нативные функции утечек не вызывают, а BJ реализация ForGroup вроде без утечек...
Мб дело в обработке группы было?
И на счёт групп - пробовали выделить заранее штук сто-двести глобальных групп и использовать по необходимости? Без создания новых.
Кстати, GetUnitsInRangeOfLocMatching() вроде вызывает утечку. Это получение группы юнитов, находящихся внутри окружности с радиусом и подходящих по условию. Утечка в том, что возвращается локальная переменная. Лечится как раз использованием глобальной переменной. (Глобальной переменной присваивается значение локальной, локальная обнуляется, глобальная возвращается) Venommm:
Если такой способ действительно эффективней, можно пожалуйста самый элементарный пример, хотябы в виде скрина.
Вам ну гуи, да? По моему, на гуи так не получится. Насколько помню, GroupEnumUnitsInRange() и ForGroup() нет в действиях, а аналоги утечны. Но я могу и ошибаться, сужу по коду в Blizzard.j, а не по тестам.
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Ну с таймером я хз, проверял раз 10 карту, никаких проблем не было, по поводу тренировочного лагеря, если без костылей, тут нужна хэш-таблица, а её я могу юзать только через код
зависит от твоих нужд
например, мне нужно хранить последние 5 секунд позиций нескольких юнитов, т.е. разбитые на участки по 0.25 секунд снимки хп/мп/координат каждого из них
это 5*4 = 20 значений каждого, итого 80
когда мы доходим до секунды 5.25, то надо сдвигать все предыдущие на единичку назад, и вставлять текущие данные на последний слот
это 79*4 операций чтения и 80*4 записей (считаю грубо, всё для примера)
когда это делается в хештбалице, нагрузка значительно выше выходит, чем если делать на массивах (хт перебирает ключи как ассоциативный массив, а обычный массив просто обращается к памяти с указанным адресом, в разы быстрее).
Но чтобы делать эту процедуру на массивах, тебе нужен индексатор этих самых юнитов, чтобы их уникальный ключ не превышал лимит массива. Это дополнительный код, который тебе нужно реализовать с нуля. Но после реализации система становится быстрее.
Была она до этого медленной? да. Влияло ли это на игру? Нет, это 100-200 микросекунд.
Опять же, когда у тебя есть пре-процессор типа vJASS + сниппеты типа Table , которые имитируют массив самостоятельно, они снимают с тебя часть обязанностей. Но из-за того, что они созданы для ОБЩЕГО случая, они все равно не дадут того выигрыша в скорости, который можешь ожидать.
Используй то, что тебе удобнее, и оптимизируй только когда это реально влияет на игру. habr.com/ru/post/550926
И не забывай, что дота стала популярной еще во времена, когда была написана почти целиком на ГУИ и нихера в ней не пахло даже оптимизацией.
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
По-моему дело в юнитах красного игрока. Удалив этот отряд орков с огром все ок работает. Перемещение не помогает.
и эта вещь адекватно работает, я тоже частенько забываю какие-то фишки, и в поиске Xgm их просто не возможно найти, вбиваем "свой вопрос" + xgm в самом гугле и найти можно практически что угодно
Если модель анимирована посмотри наличие Origin Ref. Полагаю что именно эта точка крепления используется для паутины могильщика. Для воздушных юнитов - Chest Ref. Создаются легко (но по-моему не во всех версиях в mdlvis)
В любом случае Ctrl+C(V) должен сработать - затем переименовать
Вот-вот (через 5 дней) официально выйдет Рефордж, где это может быть поправлено. Имейте толику терпения, чтобы не делать всё под сырую версию.
близзард это не поправит. Так как зачем? Люди будут делать для рефорджа фуллХД модели где уже по новой схеме будут делать открывание рта. А в классике рот открывается.
Впринципе текстуры не нужны, тут дело в костях модельки и анимации ходьбы, так как ноги вылетают из под платья, да и само оно шевелиться топорно, но как нормально привязать платье я не знаю
Что ж, информация по ссылке оказалась исчерпывающей. Резюмируя, оставлю здесь некоторые пояснения. Параметр metaKey даёт возможность отлавливать события нажатия комбинаций клавиш CTRL+Q, ALT+F6, SHIFT+5 и т.п. Параметр принимает код комбо-клавиши, ими могут быть: SHIFT (1), CTRL (2), ALT (4), WIN (8); а так же их суммы: SHIFT+CTRL (3), SHIFT+ALT (5), SHIFT+CTRL+ALT (7) и так далее. Если комбо-клавиша не нужна, то в параметр нужно передать 0.
сорян за некропост, но дам ответ на данный вопрос, т.к. появились нужные знания
эта функция утечна на 1.26, а точнее сам локальный звук, поэтому лучше юзать глобалки заготовленные и ресайкл систему, но там настолько ущербная утечка, что её можно и проигнорить в принципе
Там и защиты то никакой нету, деоптимизатором прошёлся да и все, код редактируешь одтельно и вставляешь в уже подготовленную карту.
Вот опен карта, там все изи...
Ну старый добрый JNGP + мемхак, самое то, можно сделать все что хотелось без особых проблем и 100% рабочий и точный детект типа урона и атаки, возможность плодить свои собственные баффы\дебаффы как у близзардов, с сайленсами, стунами, и так далее. Сделать нормально скиллы с псевдоконтролем, как в д2, чтобы у юнита ни скрывалась ни панель приказов, ни затемнялись абилки а просто игнорировались приказы, до момента снятия дизейбла-псевдоконтроля.
Ты же понимаешь что под это описание подходит почти каждая ORPG прошлого? Как вариант могу предложить SOLs rpg, Помню ещё одну там ещё лошадей покупать можно было и там и правда город посередине но тоже забыл название. Описывай более особенные вещи или ищи сам вот тут www.epicwar.com/maps/search/?n=orpg&go=1
Увы но нет... Главная особенность той карты что все герои открываются по мере накопления очков за игру на карте, они не открыты сразу и не походу первой катки открываются а лишь с накоплением общих баллов. Я весь мозг сломал уже, в попытках вспомнить. Эх...
Таймер кончается, все герои которые не находятся на арене - телепортируются на неё. В это же время в области создаётся нужное количество мобов и мегамоб(босс).
Окончание раунда, точно ещё не разобрался
Ну как же, сами вы ниче делать не хотите, зато попрошайничать, это для вас святое.
Нанимайте на сайте читеров тех кто вам чит версию запилит, у нас за вас никто ломать и читить карту не будет.
Порча это особый тип земли, который распространяется поверх обычной (заменяя её).
И поэтому в игре тайлы порчи часто могут занимать ещё и соседние участки.
Оптимальный вариант уйти от этой механики - заменить стандартный тайл порчей (текстуру подменить)... т.е. вместо "травы" будет текстура "порчи" (так можно сразу 2-3 порчи в одну карту добавить).
мб отслеживать приказы, какие приказы будут у работника по 100% хп здания?
Или дамиком построить здание, и отказатся строить, у всех игроков - работники альянса (иначе это не пашет) при ремонте здания союзника, если больше никтот не чинит, здание делать за того кто чинит, если бросил чинить (работник отдал любой другой приказ или умер) вернуть в нейтрала, ну и так далее.
Кет, это 4 оператора взятых из вджасс и сиджасс
видимо так юные айсфроги называют эти 2 диалекта jass
ответ прост
качаем джнгп последней версии и ЧИТАЕМ МАНУАЛЫ
Увы нет, смотреть из за чего ошибка и потом смотреть что в коде могло её вызвать.
Так же нелишним будет собрать статистику а что именно происходило в этот момент и изучать код, кторый работал в этот момент.
Фаталить могут даже дефолтные способности.
Должна появиться папка Errors с текстовкой
по логу можно попытаться найти причину фатала
Нашёл, в этой папке после фатала появляются каждый раз новые текстовые документы. Но как из них понять причину?
Всем спасибо, проблему решил: проблема была в тригерре мной сделанном. Но не понятно осталось почему в игре по локальной сети ошибок не возникало, а через хост-бота выдавало fatal error. И в каких случаях возникает этот фатал
Скорее из-за Windows, у меня тоже 1.26. Попробуй в Свойствах на вкладке Совместимость поставить Windows 7 и выполнение с правами администратора. Только эта кампания вылетает, другие кампании и карты всегда стабильно работают?
После загрузки сохранённой игры пропадают эффекты молний.
Может быть молнии не сохраняются в игре, а при загрузке их уже нет? Проверил вашу карту. Информация в переменных не сохраняется, даже в хэше. Если это так, то нужно сохранять их как-то по-другому. Там координаты, цвет
По существу переменная сохраняет молнию, даже, если она удалена или уже не существует. В ней остается информация хэндла. Если двигать или удалять несуществующую, то приводит к фаталу. А проверить существует ли молния или нет - никак. Даже просто достать информацию цвета молнии ARGB приводит к этому.
Я в своей карте после удаления обнуляю переменную
call DestroyLightning(udg_lightning_1[i])
set udg_lightning_1[i] = null
if GetHandleId(udg_lightning_1[i]) > 0 then
call DestroyLightning(udg_lightning_1[i])
set udg_lightning_1[i] = null
endif
если только по хэндлу проверять или молния!=null, то тогда нужно всегда нулить переменную. Тк переменная сохраняет хэндл, даже, если она удалена или не существует. При сохранении игры удаляешь все, а при загрузке пересоздаешь
Драколич говорил, что каждая молния создается для игрока локально.
rsfghd, Ну так у меня и так 1.26а, закинул в папку с игрой коннектор, и game.dll, сайт коннектор видит, сам коннектор меня подключает, но игры не появляются.
Гхм, слишком сложно сделано.
Заведи себе глобальную переменную целочисленного типа. Назови её "Номер игрока". При срабатывании триггера на смерть делай следующее.
Номер игрока = номер игрока(игрок-владелец(умирающий юнит))
массив[Номер игрока] = массив[Номер игрока] - 1
В настройке переменной твоего массива нужно поставить изначальное значение 3, а размер массива на количество игроков в твоей карте.
появилась до того как я создал вот этот триггер с этой фотки.
Ты тут каждые 0.1 секунды увеличиваешь значение на 3. Зачем?
Можно попробовать достать актуальный TriggerData.txt, дополнить его UMSWE триггерами и скормить редактору включив локальные файлы. Но я не гарантирую работоспособность этого метода.
Также есть небольшой шанс что в рефорже будет способ подсунуть редактору TriggerData.txt без локальных файлов, но сильно на это рассчитывать не стоит.
» WarCraft 3 / Не работает нативка GetUnitGoldCost
» Администрация XGM / Избранный комментарий
» WarCraft 3 / Тип переменной
» WarCraft 3 / Фрейм атаки
» WarCraft 3 / Проблема в ИИ
» WarCraft 3 / Импорт модели
» WarCraft 3 / GUI перебор юнитов
» WarCraft 3 / Таймер
» WarCraft 3 / Очистка экрана от текста
» WarCraft 3 / Крашит карту.
» WarCraft 3 / Лом модельки.
» Администрация XGM / Поиск вопросов
» WarCraft 3 / Кости модельки
» WarCraft 3 / Функция как параметр
» WarCraft 3 / Язык WE
» WarCraft 3 / Помогите найти игру
» WarCraft 3 / Жизнь на Арене
» WarCraft 3 / Почему?
» WarCraft 3 / Fatal
» IrInA Host Bot / Проблемы с ириной.
» WarCraft 3 / Лимит за смерти
» WarCraft 3 / редактор